import os


def no_upload_path():
    """
    不上传文件的路径
    """
    return os.path.join(project_root_path(), "util/no_upload")


def parent_path(path):
    """
    获取当前脚本所在的父目录
    """
    return os.path.dirname(path)


def current_dir():
    """
    获取当前文件路径
    """
    # os.path.dirname(os.path.abspath(sys.argv[0]))
    return os.path.abspath(os.getcwd())


def top_level_path():
    """
    获取顶级路径

    #Args:
    #    a (int): 第一个整数
    #    b (int): 第二个整数
#
    #Returns:
    #    int: 两个整数的和
    """
    return os.path.abspath(os.sep)


def current_dir_name():
    """
    获取当前文件的目录名称
    """
    # 获取当前脚本的绝对路径
    current_script = os.path.abspath(__file__)

    # 使用os.path.basename获取当前脚本的文件名
    # current_script_name = os.path.basename(current_script)
    # print(f"当前脚本文件名: {current_script_name}")

    # 获取当前脚本所在目录的路径
    current_directory = os.path.dirname(current_script)
    # 获取项目的名称，假设项目名称是当前脚本所在的目录名
    project_name = os.path.basename(current_directory)
    return project_name


def project_root_path():
    # 获取当前脚本的绝对路径
    current_script = os.path.abspath(__file__)

    # 递归向上寻找，直到找到包含项目特定文件或目录的根目录
    while not os.path.exists(os.path.join(current_script, 'README.md')):
        current_script = os.path.dirname(current_script)

    # 获取项目根路径
    return current_script


def get_current_info():
    """
    获取执行方法的名称和文件的名称（不包含后缀） eg: file_name.method_name
    """
    current_frame = inspect.currentframe()
    caller_frame = inspect.getouterframes(current_frame)[1]
    method_name = caller_frame.function
    file_path = caller_frame.filename
    file_name_without_extension = os.path.splitext(os.path.basename(file_path))[0]
    return f"{file_name_without_extension}.{method_name}"


# if __name__ == "__main__":
#     print(project_root_path())
